Mobile enablement of existing web sites

ABSTRACT

Mobile enablement of a web site, in one aspect, may comprise separating the web application into a static content and a dynamic content, the dynamic content comprising one or more data sources from which to retrieve data at runtime of the web application; rendering the static content as one or more hypertext markup language pages with one or more links between the hypertext markup language pages converted to local links; changing one or more references to the dynamic content to representational state transfer requests; enabling the representational state transfer requests from said one or more hypertext markup language pages; and packaging said one or more hypertext markup language pages as the mobile application.

CROSS REFERENCE TO RELATED APPLICATIONS

The present invention is related to commonly-owned, co-pending U.S.patent application Ser. No. 13/801,924 (Attorney Docket RSW920120126US1)entitled, “TRANSFORMING APPLICATION CACHED TEMPLATE USING PERSONALIZEDCONTENT”, filed on Mar. 13, 2013; U.S. patent application Ser. No.13/801,820 (Attorney Docket RSW920120141US1) entitled, “MOBILEENABLEMENT OF WEBPAGES”, filed on Mar. 13, 2013; U.S. patent applicationSer. No. 13/801,848 (Attorney Docket RSW920120142US1) entitled,“MOBILIZING A WEB APPLICATION TO TAKE ADVANTAGE OF A NATIVE DEVICECAPABILITY”, filed on Mar. 13, 2013; and U.S. patent application Ser.No. 13/801,892 (Attorney Docket RSW920120143US1) entitled, “ENHANCEDMOBILIZATION OF EXISTING WEB SITES”, filed on Mar. 13, 2013, the entirecontents and disclosures of which are expressly incorporated byreference herein as if fully set forth herein.

FIELD

The present application relates generally to computers, and computerapplications, and more particularly to mobile device applications andconverting existing web sites as mobile applications.

BACKGROUND

A mobile application (also referred to as mobile app) refers to asoftware application that is run on a mobile device. Existing web sitesare usually developed for access by a desktop computer or the like withfull capacity to screens, networking bandwidth, connection, and others.For at least those reasons, accessing those web sites from a mobiledevice (e.g., those that might experience network disconnects or loss asthe device moves from one area to another, narrow bandwidth, and othercharacteristics inherent in mobile devices) proves to be inefficient.

As another aspect, a mobile app is deployed into an application storesuch as an “App Store”, when it is created. Whenever any updates areneeded to be done to the mobile app, the entire updated mobile app isloaded back into such application store. Once the mobile app is updatedon the application store, the entire application is then downloaded tothe mobile device and reinstalled. Current known methodologies do notallow for selective updates, it is not possible to perform partialupdates of an application using known solutions.

BRIEF SUMMARY

A method of converting a web application to a mobile application, in oneaspect, may comprise separating the web application into a staticcontent and a dynamic content. The dynamic content may comprise one ormore data sources from which to retrieve data at runtime of the webapplication. The method may also comprise rendering the static contentas one or more hypertext markup language pages with one or more linksbetween the hypertext markup language pages converted to local links.The method may further comprise changing one or more references to thedynamic content to representational state transfer requests. The methodmay also comprise enabling the representational state transfer requestsfrom said one or more hypertext markup language pages. The method mayfurther comprise packaging said one or more hypertext markup languagepages as the mobile application.

A system converting a web application to a mobile application, in oneaspect, may comprise a conversion module operable to execute on aprocessor, the conversion module further operable to separating the webapplication into a static content and a dynamic content, the dynamiccontent comprising one or more data sources from which to retrieve dataat runtime of the web application. The conversion module may be furtheroperable to render the static content as one or more hypertext markuplanguage pages with one or more links between the hypertext markuplanguage pages converted to local links. The conversion module may befurther operable to change one or more references to the dynamic contentto representational state transfer requests to enable therepresentational state transfer requests from said one or more hypertextmarkup language pages. The one or more hypertext markup language pagesmay be packaged as the mobile application.

A computer readable storage medium storing a program of instructionsexecutable by a machine to perform one or more methods described hereinalso may be provided.

Further features as well as the structure and operation of variousembodiments are described in detail below with reference to theaccompanying drawings. In the drawings, like reference numbers indicateidentical or functionally similar elements.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an overview of a method for converting a web application to amobile application or hybrid mobile application in one embodiment of thepresent disclosure.

FIG. 2 is a flow diagram illustrating a method of converting dynamiccontent of a web application to a model such as RESTful data model basedresources in one embodiment of the present disclosure.

FIG. 3 is an example form field that allows users to update theirprofile.

FIG. 4 illustrates example of data modeled in JavaScript Object Notation(JSON) to denote the attributes associated with the REST request.

FIG. 5 illustrates an example of an updated client (application) basedupon the parsed data model.

FIG. 6 illustrates an example of REST API for retrieving data based uponthe model.

FIG. 7 is a diagram illustrating a mobile application packaged accordingto one embodiment of the present disclosure.

FIG. 8 is a flow diagram illustrating a method in which mobile appdeployed on a mobile device may be updated, in one embodiment of thepresent disclosure.

FIG. 9 illustrates a schematic of an example computer or processingsystem that may implement a system that enables conversion of a web siteapplication to a mobile application in one embodiment of the presentdisclosure.

FIG. 10 illustrates an architectural overview of mobile enablement ofweb sites in one embodiment of the present disclosure.

DETAILED DESCRIPTION

In one embodiment of the present disclosure, a methodology is presentedthat enables users or customers of a web site or the like (e.g.,client/server application), for example an existing web site, to createa mobile web site. For instance, the methodology of the presentdisclosure in one embodiment may provide for the mobile enablement ofthe existing web server or application server (e.g., WebSphere™)customers that already have investments in traditional Internet WebSites. In one aspect, the methodology of the present disclosure maycreate a mobile web site from the JavaServer Pages (JSPs) of an InternetWeb site.

The methodology of the present disclosure in one aspect converts anexisting Internet Web site into a functionally equivalent “mobile clientand mobile gateway” so that the Web site can be accessed and usedefficiently via mobile devices. Examples of a mobile device may include,but not limited to, a cell phone, smart phone, tablet, laptop computer,and/or others. Consider a conventional Web site, created via toolinglike Eclipse™. Here the web site is composed of one or more JSPs. In oneembodiment of the present disclosure, a plugin for Eclipse™ is createdthat reads the JSP pages from the web site above and renders thehypertext markup language (HTML) for each page into a file. Within thisHTML the navigational links between these pages are changed to locallinks. In addition, the associated JSPs are analyzed to determine whichitems on these HTML pages are dynamic data. Dynamic data or dynamiccontent refers to data whose values are obtained for displaying on a webpage, e.g., as opposed to having the data value pre-specified in theHTML page. Dynamic data, e.g., may be caused to be displayed via ascripting language, e.g., embedded in the web page. So for example, adynamic web page includes dynamic content that changes, e.g., based onuser input, attributes or parameters, computer program, and/or anothercriterion. The methodology of the present disclosure in one embodimentmodifies these JSPs to create a new set of JSPs that offer RESTfulinterfaces to the logic for each dynamic tag. REST stands forRepresentational State Transfer. This new set of HTML pages is calledthe mobile gateway for the web site. These tags, and their associatedRESTful interfaces, are correlated with their companion dynamic tagswithin the HTML pages above. Next, the dynamic tags in the HTML arereplaced by RESTful calls to the RESTful interfaces of the mobilegateway.

To create a mobile app the HTML pages are packaged collectively into abundle with an icon and an interface to the “web browser” for theoperating system (OS) of the mobile device. This collection constitutesa mobile app, which is deployable to an application store or the like,e.g., the iTunes™ App Store™, and other application stores. Anapplication store refers to an online store for downloading softwareapplications and/or mobile applications, e.g., by purchasing or free ofcharge.

A more sophisticated mobile app has embedded within this package a localJavaScript based client side aggregator. This aggregator batchesrequests from the mobile application for dynamic content and sends themto the mobile gateway in a single message. This greatly reduces networkchatter and bandwidth by assembling multiple requests for dynamic datainto a single request. It receives back a single response which theaggregator breaks into separate responses, one for each originatingrequest.

Once the app is deployed to an application store it can then bedownloaded to a mobile device. The app's icon is displayed on thedevice's home screen, and clicking on this icon will evoke and displaythe corresponding HTML pages on the mobile devices screen. Within theseHTML pages the associated dynamic data is fetched from the respectivemobile gateway. In one embodiment of the present disclosure, this isachieved via the embedded RESTful commands or the like.

Navigation among the HTML pages in an app occurs locally and thusrequires no network access. This reduces network traffic and therebyimproves the user experience. As each page is displayed the dynamic datafor that page is fetched. There is no need to fetch either the pagesHTML or JavaScript because they are already loaded onto the mobiledevice as part of the app. This saves network resources, makes thegateway more scalable and further improves the user experience.

The HTML and JavaScript are part of the app and are thus not fetchedover the cellular network. This reduces network traffic and the load onthe server. This is particularly valuable if the HTML pages includeJavaScript for analytics. Dynamic data is fetched via restful means.Thus the link between the mobile client and the server is asynchronousand is thus well suited to surviving network disconnects and adapting topower saving protocols where the app is put to sleep. Using standardmobile OS techniques the app is awoken when a message is received fromthe server. Using restful messages is both network friendly and resourceefficient. Having the HTML graphical user interface (GUI) local on theclient improves the apps responsiveness to manipulation by the user. Themobile gateway provides the app with restful interfaces to the back enddata. These interfaces are both network friendly and resource efficient.Multiple request for dynamic data from the app can be aggregatedtogether to minimize the number of messages (and the amount of data)flowing over the network. This reduces the network latency experiencedby the user.

A methodology of the present disclosure in one embodiment convertsexisting web site to a mobile friendly one that may include a mobileclient and a mobile gateway. The gateway here may be a server thathouses the RESTful interfaces and connectors to the back end data. Avast number of web sites may benefit mobile enablement.

FIG. 1 is an overview of a method for enabling existing web sites to bemobile, e.g., converting a web application to a mobile application orhybrid mobile application in one embodiment of the present disclosure.Briefly, a native application refers to an application that is developedto run a specific platform, e.g., using one or more resources, e.g.,operating system specific to that platform. Similarly, a native mobileapplication refers to an application written to run on specific mobiledevice. On the other hand, platform independent codes or program such asthose written in JAVA or the like may be written once and run anywhere.A hybrid mobile application refers to an application comprising bothnative and platform independent codes, e.g., platform independent codewrapped inside a native container. The method may include separating aweb application into a static content and a dynamic content with datasources at 102. For example, the dynamic content may include one or moredata sources from which to retrieve data at run time of the webapplication. The method may further include rendering the static contentas HTML pages with the links between the HTML pages converted to locallinks and references to dynamic content changed to REST requests at 104.In one embodiment, the code may be separated into modules. For example,the HTML containing the static content and then an import of aJavaScript library may be referenced in the static HTML page to make theREST calls to obtain the dynamic data, enabling one or more RESTrequests from the HTML page. The REST requests may be also inserted tothe HTML pages. The method may also include packaging the HTML pages asa mobile application that can be down loaded from an application storeto a mobile device at 106.

The method may further include utilizing a mobile gateway on a remoteserver for accessing the dynamic content with the data sources at 108.The application further may include a native library for accessingdevice specific features, application code, JavaScript, HTML, cascadingstyle sheets (CSS), RESTful interfaces for each dynamic tag, and otherapplication artifacts, e.g., icons, images, and/or an applicationmanifest indicating version information for each component of theapplication. Thus, in one embodiment of the present disclosure, anapplication may comprise a set of resources, e.g.: 1) static HTMLresources representing the view; 2) JavaScript resources to make theREST calls; 3) JavaScript resources that bridge to the native API calls(this is hybrid); 4) native libraries; 5) CSS resources for formattingand styling the HTML.

The method may also include at 110, utilizing the application manifestfor identifying component difference between a local version of themobile application on a mobile device and a remote version of the mobileapplication resident on a remote server. The method may further includeat 112, updating the mobile application selectively by only updating theHTML and JavaScript of the local mobile application with the changesfrom the remote version.

As one example, dynamic content that is represented in a Web 1.0 styleapplication, e.g., Groovy Templates, JSP and PHP, may be modeled. Inthat way, the dynamic aspects can be extracted from the staticcomponents of the web page creating a static html version of theapplication that can be hosted by any “web server”. With the extracteddynamic components, the methodology of the present disclosure in oneembodiment may use this model (data model associated with dynamiccontent of the web application) to generate a REST API for obtainingthis dynamic data. An advantage of this solution is that by separatingthe HTML from the dynamic content, intermediaries can cache the staticHTML resources and leverage the REST protocol for caching any of theservices that are exposed via the REST API for the various CRUDoperations (CREATE, RETRIEVE, UPDATE, DELETE).

A “web server” in the present disclosure refers to any server that iscapable of file serving of static html resources (e.g., webkitcontainers for hybrid mobile applications such as PhoneGap™ or typicalweb servers such as Apache™), e.g., via hypertext transfer protocol(HTTP) requests, versus an application server such as WebSphere™Application Server serving content such as JSPs or CGI plugins that canbe used for executing script based languages such as PHP on Apache.

FIG. 2 is a flow diagram illustrating a method of converting dynamiccontent of a web application to a model such as RESTful data model basedresources in one embodiment of the present disclosure. FIG. 3 is anexample form field that allows users to update their profile. Thisexample illustrates using a very simple HTML form to help describe howthis could be done. This is by no means limited to this simple use casebut it should help describe how this could be implemented. In thisexample, the sample JSP page contains a standard JavaBean that containsuser profile information. This JSP is composed of mostly HTML contentwith some input fields that are populated by data retrieved by theJavaBean (POJO). A web page or application may utilize other dynamiccomponents, e.g., other reusable software component not limited toJavaBean, and others.

In this code snippet, for example, the dynamic aspects are identified bythe syntax defined by JSPs (and similar notions exist in PHP as well).In this code snippet, there are two types of JSP tags. The first is <%%> which allows one to insert scripts (also referred to as codesnippets) and the <%=%> which allows one to output dynamic content(which, e.g., does not have to be visually displayed in the browser(e.g., it could be used for calculations in javascript for instance)).These hints are used to automatically extract the elements and generate,e.g., a RESTful Asynchronous Javascript and XML (AJAX) call to obtainthe values from the server.

Referring to FIG. 2, at 202, the content of a web application documentmay be parsed to build a map of dynamic code references. The parsing ofthe document is performed to locate any dynamic content. In the exampleshown in FIG. 3, the method of the present disclosure may find onescriptlet that retrieves a ProfileBean object based upon the logged inuser. For example, remoteUser contains the user subject's log inidentification (id). Once this bean is instantiated, the form willreference this bean to provide the current values that it has for thatuser.

At 204, data model is generated based on the map of dynamic codereferences (also referred to as a reference map). The data model, e.g.,specifies the variable names or object names that needs to bedynamically resolved at runtime. FIG. 4 illustrates an example datamodeled in JavaScript Object Notation (JSON) to denote the attributesassociated with the REST request.

At 206, client code (application) or client-side code is updated toretrieve and update dynamic content via REST. Using the data modeldefined at 204, the method of the present disclosure in one embodimentrefactors the web resource (application) or the code to remove thereferences to dynamic scripting that is executed on the server side. Inthis example, Dojo may be leveraged to invoke a REST application programinterface (API) that is running on the server to obtain the ProfileBeanthat has been modeled at 204. In response to receiving the content fromthe server, the method of the present disclosure in one embodimentdynamically via JavaScript updates the various form fields that hadpreviously been populated server side.

FIG. 5 illustrates an example of an updated client (application) basedupon the parsed data model. The example code replaces the dynamiccontent in the code shown in FIG. 3. Lines 8-22 of the example code showinvoking of REST to obtain the ProfileBean.

At 208, server code is implemented to expose data model via REST. FIG. 6illustrates an example of REST API for retrieving data based upon themodel. The method of the present disclosure in one embodiment creates aRESTful resource implementation that can retrieve the content. In thisexample, a servlet is wired as the RESTful resource. In this code, theProfileBean is retrieved and populated based upon the logged in user.Once this action is performed, the content is transformed to XML andreturned to the user.

The following illustrates an example of the content that is returned:

GET/resources/profileBean

result:

{ “firstName” : “Tom”, “lastName” : “Smith”, RSW920120140US03 “email”:“tom.smith@xxx.com”, “sex” : “MALE” }

FIG. 7 is a diagram illustrating a mobile application packaged accordingto one embodiment of the present disclosure. A native library 702comprises executable objects that can run on a mobile device. The nativelibrary 702 is used to access the device specific features. Anapplication code 704 that has been converted from the web applicationperforms its functions on the mobile device, and for example, may invokeone or more of functions of the native library 702. The application codemay also utilize JavaScript, HTML, and/or CSS 706 executable on themobile device. RESTful interfaces 708 for each dynamic tag is used toobtain the dynamic data from the web server. HTML file 710 containsstatic content of the code 704. Other application artifacts 712 such asicons, images, and others may be used in invoking the mobileapplication. In one aspect, the application code 704 comprises basicconversion from using web 1.0 styling or the like with JSPs to theRESTful or the like; The application code at 706 extends the code at 704to also include the ability to use the native device APIs. Theapplication code 706 may be further enhanced for a mobile device.

The entire contents may be packaged and deployed on an application storeor the like that can be downloaded and installed on mobile devices. Thishelps the user to not have to retrieve every page from a server (sinceit is all packaged as part of the app) and the application feels like anative application.

In one embodiment of the present disclosure, such mobile application sodeployed on a mobile device may be selectively updated, e.g., inoptimized fashion. For instance, when an enterprise or like wants toupdate the mobile app, the enterprise can do so by the traditional wayof packaging the entire mobile app and uploading to the applicationstore and allowing the users download the entire app again to theirdevices.

Another way of updating a mobile app is to selectively update it. In oneembodiment of the present disclosure, as part of packaging the mobileapp, for example, an app manifest is added that has the information onthe version of each component of the app.

An example of an appManifest is shown below:

appManifest

applicationVersion: version number

page1Version: version number

page2Version: version number

. . .

nativeLibraryVersion: version number

A mobile application may be deployed to an application store and also toa mobile server. The mobile server may run within the enterprise andservices the enterprise's mobile applications to its users. When userswant to install the application initially, they go to the applicationstore to install it, e.g., the application is downloaded from theapplication store and deployed onto the user's mobile device. FIG. 8 isa flow diagram illustrating a method in which mobile apps installed on amobile device may be updated in one embodiment of the presentdisclosure. At 802, a mobile application running on a mobile device mayconnect to a mobile server or the like, e.g., run by an enterpriseproviding the mobile application to its customers or users. At 804, themobile application downloads an app manifest file associated with themobile application from the mobile server or the like. At 806, it isdetermined whether the version number associated with the applicationspecified in the downloaded app manifest file different from the currentmobile application's version number, e.g., by examining the versionnumber specified in the app manifest file previously downloaded andstored on the mobile device. If the application version number isdifferent, at 808, one or more components that have different versionnumbers are determined, e.g., by comparing the content of the downloadedapp manifest file with the previously downloaded one.

In one embodiment of the present disclosure, one or more components thathave different version numbers may be downloaded, and stored locally onthe mobile device at 810, which has the effect of updating the mobileapplication immediately. Further, at 814, the app manifest file isupdated with one or more version numbers corresponding to the one ormore downloaded components.

In another embodiment of the present disclosure, one or more componentsthat have different version numbers may be marked at 812. At 816, whenor in response to detecting a user navigating to, or using, the markedcomponent of the mobile application, the component may be updated bydownloading it from the application store. The app manifest file is alsoupdated with the version number of the downloaded and updated component.

The app manifest file need not be limited to the format shown above. Forinstance, the app manifest file need not be one file containinginformation about all of the components; rather, there may be an appmanifest file for a component. Other format may be utilized as appmanifest file.

With the method shown in FIG. 8, it becomes very easy to update parts ofthe mobile application. The application still looks and feels like anative application since all the HTML, JavaScript, CSS needed arepackaged as part of the app and the user does not have to wait todownload the artifacts every time. The mobile app provider can not onlyupgrade but also rollback changes easily by updating the artifactshosted in the mobile server within the enterprise.

This method also provides the ability for the provider to selectivelyopen up functionality to different sets of users. Depending on the usercredentials, parts of the application can be updated to provide newfeatures.

FIG. 10 illustrates an architectural overview of mobile enablement ofweb sites in one embodiment of the present disclosure. A web site 1002or a web application that displays or presents such site may beconverted into a mobile application, e.g., as described above. Themobile application so converted may be stored in an application store1004. One or more mobile devices (e.g., 1010, 1012) may download themobile application from an application store or the like 1004, e.g.,over a network 1008. Updates to one or more components of the mobileapplication associated with web site 1002 may be performed via a mobileserver or gateway 1006. Such server or gateway 1006 may store orretrieve the updated components which may be downloaded to a mobiledevice, e.g., 1010, 1012.

FIG. 9 illustrates a schematic of an example computer or processingsystem that may implement the system that provides mobile enablement ofweb site in one embodiment of the present disclosure. The computersystem is only one example of a suitable processing system and is notintended to suggest any limitation as to the scope of use orfunctionality of embodiments of the methodology described herein. Theprocessing system shown may be operational with numerous other generalpurpose or special purpose computing system environments orconfigurations. Examples of well-known computing systems, environments,and/or configurations that may be suitable for use with the processingsystem shown in FIG. 9 may include, but are not limited to, personalcomputer systems, server computer systems, thin clients, thick clients,handheld or laptop devices, multiprocessor systems, microprocessor-basedsystems, set top boxes, programmable consumer electronics, network PCs,minicomputer systems, mainframe computer systems, and distributed cloudcomputing environments that include any of the above systems or devices,and the like.

The computer system may be described in the general context of computersystem executable instructions, such as program modules, being executedby a computer system. Generally, program modules may include routines,programs, objects, components, logic, data structures, and so on thatperform particular tasks or implement particular abstract data types.The computer system may be practiced in distributed cloud computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed cloudcomputing environment, program modules may be located in both local andremote computer system storage media including memory storage devices.

The components of computer system may include, but are not limited to,one or more processors or processing units 12, a system memory 16, and abus 14 that couples various system components including system memory 16to processor 12. The processor 12 may include a module 10 that performsthe methods described herein. The module 10 may be programmed into theintegrated circuits of the processor 12, or loaded from memory 16,storage device 18, or network 24 or combinations thereof.

Bus 14 may represent one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnects (PCI) bus.

Computer system may include a variety of computer system readable media.Such media may be any available media that is accessible by computersystem, and it may include both volatile and non-volatile media,removable and non-removable media.

System memory 16 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) and/or cachememory or others. Computer system may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 18 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(e.g., a “hard drive”). Although not shown, a magnetic disk drive forreading from and writing to a removable, non-volatile magnetic disk(e.g., a “floppy disk”), and an optical disk drive for reading from orwriting to a removable, non-volatile optical disk such as a CD-ROM,DVD-ROM or other optical media can be provided. In such instances, eachcan be connected to bus 14 by one or more data media interfaces.

Computer system may also communicate with one or more external devices26 such as a keyboard, a pointing device, a display 28, etc.; one ormore devices that enable a user to interact with computer system; and/orany devices (e.g., network card, modem, etc.) that enable computersystem to communicate with one or more other computing devices. Suchcommunication can occur via Input/Output (I/O) interfaces 20.

Still yet, computer system can communicate with one or more networks 24such as a local area network (LAN), a general wide area network (WAN),and/or a public network (e.g., the Internet) via network adapter 22. Asdepicted, network adapter 22 communicates with the other components ofcomputer system via bus 14. It should be understood that although notshown, other hardware and/or software components could be used inconjunction with computer system. Examples include, but are not limitedto: microcode, device drivers, redundant processing units, external diskdrive arrays, RAID systems, tape drives, and data archival storagesystems, etc.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages, a scripting language such as Perl, VBS or similarlanguages, and/or functional languages such as Lisp and ML andlogic-oriented languages such as Prolog. The program code may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider).

Aspects of the present invention are described with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The computer program product may comprise all the respective featuresenabling the implementation of the methodology described herein, andwhich—when loaded in a computer system—is able to carry out the methods.Computer program, software program, program, or software, in the presentcontext means any expression, in any language, code or notation, of aset of instructions intended to cause a system having an informationprocessing capability to perform a particular function either directlyor after either or both of the following: (a) conversion to anotherlanguage, code or notation; and/or (b) reproduction in a differentmaterial form.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements, if any, in the claims below areintended to include any structure, material, or act for performing thefunction in combination with other claimed elements as specificallyclaimed. The description of the present invention has been presented forpurposes of illustration and description, but is not intended to beexhaustive or limited to the invention in the form disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The embodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

Various aspects of the present disclosure may be embodied as a program,software, or computer instructions embodied in a computer or machineusable or readable medium, which causes the computer or machine toperform the steps of the method when executed on the computer,processor, and/or machine. A program storage device readable by amachine, tangibly embodying a program of instructions executable by themachine to perform various functionalities and methods described in thepresent disclosure is also provided.

The system and method of the present disclosure may be implemented andrun on a general-purpose computer or special-purpose computer system.The terms “computer system” and “computer network” as may be used in thepresent application may include a variety of combinations of fixedand/or portable computer hardware, software, peripherals, and storagedevices. The computer system may include a plurality of individualcomponents that are networked or otherwise linked to performcollaboratively, or may include one or more stand-alone components. Thehardware and software components of the computer system of the presentapplication may include and may be included within fixed and portabledevices such as desktop, laptop, and/or server. A module may be acomponent of a device, software, program, or system that implements some“functionality”, which can be embodied as software, hardware, firmware,electronic circuitry, or etc.

The embodiments described above are illustrative examples and it shouldnot be construed that the present invention is limited to theseparticular embodiments. Thus, various changes and modifications may beeffected by one skilled in the art without departing from the spirit orscope of the invention as defined in the appended claims.

What is claimed is:
 1. A system comprising: a hardware processor; amemory device operatively coupled to the hardware processor; thehardware processor operable to at least: separate the web applicationinto a static content and a dynamic content, the dynamic contentincluding at least dynamic scripting that is executed on a server side,the dynamic content automatically identified at least based on a hint inthe web application; render the static content as at least one hypertextmarkup language page with at least one link in the hypertext markuplanguage page converted to a local link; change at least one referenceto the dynamic content to a representational state transfer request;insert the representational state transfer request into said at leastone hypertext markup language page; and package said at least onehypertext markup language page as a mobile application, the mobileapplication further programmed to selectively open up functionality todifferent sets of users.
 2. The system of claim 1, wherein the hardwareprocessor identifies the dynamic content based on a hint in the webapplication.
 3. The system of claim 1, wherein the dynamic contentremains unresolved in the packaged mobile application.
 4. The system ofclaim 1, wherein the packaged mobile application is stored to anapplication store for downloading to a user's mobile device.
 5. Thesystem of claim 1, wherein a mobile gateway on a remote server isutilized for accessing the dynamic content with the data sources.
 6. Thesystem of claim 1, wherein the packaged mobile application furtherincludes at least a native library for accessing device specificfeatures associated with a mobile device.
 7. The system of claim 1,wherein the packaged mobile application further includes at least anapplication manifest that identifies a version number associated acomponent in the packaged mobile application.
 8. A computer programproduct comprising a computer readable storage medium having programinstructions embodied therewith, the program instructions readable by aprocessor to cause the processor to: separate the web application into astatic content and a dynamic content, the dynamic content including atleast dynamic scripting that is executed on a server side, the dynamiccontent automatically identified at least based on a hint in the webapplication; render the static content as at least one hypertext markuplanguage page with at least one link in the hypertext markup languagepage converted to a local link; change at least one reference to thedynamic content to a representational state transfer request; insert therepresentational state transfer request into said at least one hypertextmarkup language page; and package said at least one hypertext markuplanguage page as a mobile application, the mobile application furtherprogrammed to selectively open up functionality to different sets ofusers.
 9. The computer program product of claim 8, wherein the processoris further cause to identify the dynamic content based on a hint in theweb application.
 10. The computer program product of claim 8, whereinthe dynamic content remains unresolved in the packaged mobileapplication.
 11. The computer program product of claim 8, wherein thepackaged mobile application is stored to an application store fordownloading to a user's mobile device.
 12. The computer program productof claim 8, wherein a mobile gateway on a remote server is utilized foraccessing the dynamic content with the data sources.
 13. The computerprogram product of claim 8, wherein the packaged mobile applicationfurther includes at least a native library for accessing device specificfeatures associated with a mobile device.
 14. The computer programproduct of claim 8, wherein the packaged mobile application furtherincludes at least an application manifest that identifies a versionnumber associated a component in the packaged mobile application.
 15. Acomputer-implemented method comprising: separating the web applicationinto a static content and a dynamic content, the dynamic contentincluding at least dynamic scripting that is executed on a server side,the dynamic content automatically identified at least based on a hint inthe web application; rendering the static content as at least onehypertext markup language page with at least one link in the hypertextmarkup language page converted to a local link; changing at least onereference to the dynamic content to a representational state transferrequest; inserting the representational state transfer request into saidat least one hypertext markup language page; and packaging said at leastone hypertext markup language page as a mobile application, the mobileapplication further programmed to selectively open up functionality todifferent sets of users.
 16. The computer-implemented method of claim15, further comprising identifying the dynamic content based on a hintin the web application.
 17. The computer-implemented method of claim 15,wherein the dynamic content remains unresolved in the packaged mobileapplication.
 18. The computer-implemented method of claim 15, furthercomprising: transmitting the packaged mobile application to anapplication store for downloading to a user's mobile device.
 19. Thecomputer-implemented method of claim 15, wherein the packaged mobileapplication further includes at least a native library for accessingdevice specific features associated with a mobile device.
 20. Thecomputer-implemented method of claim 15, wherein the packaged mobileapplication further includes at least an application manifest thatidentifies a version number associated a component in the packagedmobile application.